/**
**********************************************************************************************************************************************************************************************************************************
* @file:	main.c
* @author:	zinface
* @date:	2021年11月10日 14:55:56 星期三
* @brief:	测试FinalMod主程序
**********************************************************************************************************************************************************************************************************************************
**/
#include "ModBuildin.h"

#include "common.h"

#include <stdio.h>

int	main(int argc, char **argv)
{
    ModStruct *welcome_ms = createModStructWithMeta("./libwelcome.so", "welcome");

    // 尝试加载 welcome 模块
    if (modStructLoader(welcome_ms)) {
        // 尝试加载 welcome 模块的元数据
        if(modStructLoaderFinalModMeta(welcome_ms)) {
            // printf("%s Meta 加载成功: %s\n", welcome_ms->name, welcome_ms->meta->meta_descript);
        }
        // 尝试加载 welcome 模块的包装数据: WelStruct
        if (modStructLoaderFinalModWrap(welcome_ms)) {
            // printf("%s Wrap 加载成功: %s\n", welcome_ms->name, welcome_ms->wrap->wrap_name);

            // 转换wrap包装数据的数据部分到 WelStruct 
            WelStruct *wel = convWelStruct(welcome_ms->wrap->wrap_data);

            // 打印 welcome 模块的包装数据: WelStruct
            printf("--> %s\n"
                   "--> %s\n",wel->hello, wel->bye);

            // 尝试调用 welcome 模块包装数据提供的方法
            wel->welcomeFunc();
            wel->goodbyeFunc();
        }
    }

    // 卸载模块
    modStructUnloader(welcome_ms);

    return 0;
}

// Output:
// --> ======== Welcome to FinalMod ========
// --> ======== Goodle bye FinalMod ========
// welcome: ======== Welcome to FinalMod ========
// welcome: ======== Goodle bye FinalMod ========
